/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */

/* eslint-disable */
// Generated from src/antlr4/Agtype.g4 by ANTLR 4.9.0-SNAPSHOT

import { ATN } from 'antlr4ts/atn/ATN'
import { ATNDeserializer } from 'antlr4ts/atn/ATNDeserializer'
import { CharStream } from 'antlr4ts/CharStream'
import { Lexer } from 'antlr4ts/Lexer'
import { LexerATNSimulator } from 'antlr4ts/atn/LexerATNSimulator'
import { Vocabulary } from 'antlr4ts/Vocabulary'
import { VocabularyImpl } from 'antlr4ts/VocabularyImpl'

import * as Utils from 'antlr4ts/misc/Utils'

export class AgtypeLexer extends Lexer {
    public static readonly T__0 = 1;
    public static readonly T__1 = 2;
    public static readonly T__2 = 3;
    public static readonly T__3 = 4;
    public static readonly T__4 = 5;
    public static readonly T__5 = 6;
    public static readonly T__6 = 7;
    public static readonly T__7 = 8;
    public static readonly T__8 = 9;
    public static readonly T__9 = 10;
    public static readonly T__10 = 11;
    public static readonly T__11 = 12;
    public static readonly T__12 = 13;
    public static readonly IDENT = 14;
    public static readonly STRING = 15;
    public static readonly INTEGER = 16;
    public static readonly RegularFloat = 17;
    public static readonly ExponentFloat = 18;
    public static readonly WS = 19;

    // tslint:disable:no-trailing-whitespace
    public static readonly channelNames: string[] = [
      'DEFAULT_TOKEN_CHANNEL', 'HIDDEN'
    ];

    // tslint:disable:no-trailing-whitespace
    public static readonly modeNames: string[] = [
      'DEFAULT_MODE'
    ];

    public static readonly ruleNames: string[] = [
      'T__0', 'T__1', 'T__2', 'T__3', 'T__4', 'T__5', 'T__6', 'T__7', 'T__8',
      'T__9', 'T__10', 'T__11', 'T__12', 'IDENT', 'STRING', 'ESC', 'UNICODE',
      'HEX', 'SAFECODEPOINT', 'INTEGER', 'INT', 'RegularFloat', 'ExponentFloat',
      'DECIMAL', 'SCIENTIFIC', 'WS'
    ];

    private static readonly _LITERAL_NAMES: Array<string | undefined> = [
      undefined, "'true'", "'false'", "'null'", "'{'", "','", "'}'", "':'",
      "'['", "']'", "'::'", "'-'", "'Infinity'", "'NaN'"
    ];

    private static readonly _SYMBOLIC_NAMES: Array<string | undefined> = [
      undefined, undefined, undefined, undefined, undefined, undefined, undefined,
      undefined, undefined, undefined, undefined, undefined, undefined, undefined,
      'IDENT', 'STRING', 'INTEGER', 'RegularFloat', 'ExponentFloat', 'WS'
    ];

    public static readonly VOCABULARY: Vocabulary = new VocabularyImpl(AgtypeLexer._LITERAL_NAMES, AgtypeLexer._SYMBOLIC_NAMES, []);

    // @Override
    // @NotNull
    public get vocabulary (): Vocabulary {
      return AgtypeLexer.VOCABULARY
    }

    // tslint:enable:no-trailing-whitespace

    constructor (input: CharStream) {
      super(input)
      this._interp = new LexerATNSimulator(AgtypeLexer._ATN, this)
    }

    // @Override
    public get grammarFileName (): string {
      return 'Agtype.g4'
    }

    // @Override
    public get ruleNames (): string[] {
      return AgtypeLexer.ruleNames
    }

    // @Override
    public get serializedATN (): string {
      return AgtypeLexer._serializedATN
    }

    // @Override
    public get channelNames (): string[] {
      return AgtypeLexer.channelNames
    }

    // @Override
    public get modeNames (): string[] {
      return AgtypeLexer.modeNames
    }

    public static readonly _serializedATN: string =
        '\x03\uC91D\uCABA\u058D\uAFBA\u4F53\u0607\uEA8B\uC241\x02\x15\xB9\b\x01' +
        '\x04\x02\t\x02\x04\x03\t\x03\x04\x04\t\x04\x04\x05\t\x05\x04\x06\t\x06' +
        '\x04\x07\t\x07\x04\b\t\b\x04\t\t\t\x04\n\t\n\x04\v\t\v\x04\f\t\f\x04\r' +
        '\t\r\x04\x0E\t\x0E\x04\x0F\t\x0F\x04\x10\t\x10\x04\x11\t\x11\x04\x12\t' +
        '\x12\x04\x13\t\x13\x04\x14\t\x14\x04\x15\t\x15\x04\x16\t\x16\x04\x17\t' +
        '\x17\x04\x18\t\x18\x04\x19\t\x19\x04\x1A\t\x1A\x04\x1B\t\x1B\x03\x02\x03' +
        '\x02\x03\x02\x03\x02\x03\x02\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03' +
        '\x03\x03\x04\x03\x04\x03\x04\x03\x04\x03\x04\x03\x05\x03\x05\x03\x06\x03' +
        '\x06\x03\x07\x03\x07\x03\b\x03\b\x03\t\x03\t\x03\n\x03\n\x03\v\x03\v\x03' +
        '\v\x03\f\x03\f\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03\r\x03' +
        '\x0E\x03\x0E\x03\x0E\x03\x0E\x03\x0F\x03\x0F\x07\x0Fh\n\x0F\f\x0F\x0E' +
        '\x0Fk\v\x0F\x03\x10\x03\x10\x03\x10\x07\x10p\n\x10\f\x10\x0E\x10s\v\x10' +
        '\x03\x10\x03\x10\x03\x11\x03\x11\x03\x11\x05\x11z\n\x11\x03\x12\x03\x12' +
        '\x03\x12\x03\x12\x03\x12\x03\x12\x03\x13\x03\x13\x03\x14\x03\x14\x03\x15' +
        '\x05\x15\x87\n\x15\x03\x15\x03\x15\x03\x16\x03\x16\x03\x16\x07\x16\x8E' +
        '\n\x16\f\x16\x0E\x16\x91\v\x16\x05\x16\x93\n\x16\x03\x17\x05\x17\x96\n' +
        '\x17\x03\x17\x03\x17\x03\x17\x03\x18\x05\x18\x9C\n\x18\x03\x18\x03\x18' +
        '\x05\x18\xA0\n\x18\x03\x18\x03\x18\x03\x19\x03\x19\x06\x19\xA6\n\x19\r' +
        '\x19\x0E\x19\xA7\x03\x1A\x03\x1A\x05\x1A\xAC\n\x1A\x03\x1A\x06\x1A\xAF' +
        '\n\x1A\r\x1A\x0E\x1A\xB0\x03\x1B\x06\x1B\xB4\n\x1B\r\x1B\x0E\x1B\xB5\x03' +
        '\x1B\x03\x1B\x02\x02\x02\x1C\x03\x02\x03\x05\x02\x04\x07\x02\x05\t\x02' +
        '\x06\v\x02\x07\r\x02\b\x0F\x02\t\x11\x02\n\x13\x02\v\x15\x02\f\x17\x02' +
        '\r\x19\x02\x0E\x1B\x02\x0F\x1D\x02\x10\x1F\x02\x11!\x02\x02#\x02\x02%' +
        "\x02\x02\'\x02\x02)\x02\x12+\x02\x02-\x02\x13/\x02\x141\x02\x023\x02\x02" +
        '5\x02\x15\x03\x02\f\x05\x02C\\aac|\x07\x02&&2;C\\aac|\n\x02$$11^^ddhh' +
        'ppttvv\x05\x022;CHch\x05\x02\x02!$$^^\x03\x023;\x03\x022;\x04\x02GGgg' +
        '\x04\x02--//\x05\x02\v\f\x0F\x0F""\x02\xBF\x02\x03\x03\x02\x02\x02\x02' +
        '\x05\x03\x02\x02\x02\x02\x07\x03\x02\x02\x02\x02\t\x03\x02\x02\x02\x02' +
        '\v\x03\x02\x02\x02\x02\r\x03\x02\x02\x02\x02\x0F\x03\x02\x02\x02\x02\x11' +
        '\x03\x02\x02\x02\x02\x13\x03\x02\x02\x02\x02\x15\x03\x02\x02\x02\x02\x17' +
        '\x03\x02\x02\x02\x02\x19\x03\x02\x02\x02\x02\x1B\x03\x02\x02\x02\x02\x1D' +
        '\x03\x02\x02\x02\x02\x1F\x03\x02\x02\x02\x02)\x03\x02\x02\x02\x02-\x03' +
        '\x02\x02\x02\x02/\x03\x02\x02\x02\x025\x03\x02\x02\x02\x037\x03\x02\x02' +
        '\x02\x05<\x03\x02\x02\x02\x07B\x03\x02\x02\x02\tG\x03\x02\x02\x02\vI\x03' +
        '\x02\x02\x02\rK\x03\x02\x02\x02\x0FM\x03\x02\x02\x02\x11O\x03\x02\x02' +
        '\x02\x13Q\x03\x02\x02\x02\x15S\x03\x02\x02\x02\x17V\x03\x02\x02\x02\x19' +
        'X\x03\x02\x02\x02\x1Ba\x03\x02\x02\x02\x1De\x03\x02\x02\x02\x1Fl\x03\x02' +
        "\x02\x02!v\x03\x02\x02\x02#{\x03\x02\x02\x02%\x81\x03\x02\x02\x02\'\x83" +
        '\x03\x02\x02\x02)\x86\x03\x02\x02\x02+\x92\x03\x02\x02\x02-\x95\x03\x02' +
        '\x02\x02/\x9B\x03\x02\x02\x021\xA3\x03\x02\x02\x023\xA9\x03\x02\x02\x02' +
        '5\xB3\x03\x02\x02\x0278\x07v\x02\x0289\x07t\x02\x029:\x07w\x02\x02:;\x07' +
        'g\x02\x02;\x04\x03\x02\x02\x02<=\x07h\x02\x02=>\x07c\x02\x02>?\x07n\x02' +
        '\x02?@\x07u\x02\x02@A\x07g\x02\x02A\x06\x03\x02\x02\x02BC\x07p\x02\x02' +
        'CD\x07w\x02\x02DE\x07n\x02\x02EF\x07n\x02\x02F\b\x03\x02\x02\x02GH\x07' +
        '}\x02\x02H\n\x03\x02\x02\x02IJ\x07.\x02\x02J\f\x03\x02\x02\x02KL\x07\x7F' +
        '\x02\x02L\x0E\x03\x02\x02\x02MN\x07<\x02\x02N\x10\x03\x02\x02\x02OP\x07' +
        ']\x02\x02P\x12\x03\x02\x02\x02QR\x07_\x02\x02R\x14\x03\x02\x02\x02ST\x07' +
        '<\x02\x02TU\x07<\x02\x02U\x16\x03\x02\x02\x02VW\x07/\x02\x02W\x18\x03' +
        '\x02\x02\x02XY\x07K\x02\x02YZ\x07p\x02\x02Z[\x07h\x02\x02[\\\x07k\x02' +
        '\x02\\]\x07p\x02\x02]^\x07k\x02\x02^_\x07v\x02\x02_`\x07{\x02\x02`\x1A' +
        '\x03\x02\x02\x02ab\x07P\x02\x02bc\x07c\x02\x02cd\x07P\x02\x02d\x1C\x03' +
        '\x02\x02\x02ei\t\x02\x02\x02fh\t\x03\x02\x02gf\x03\x02\x02\x02hk\x03\x02' +
        '\x02\x02ig\x03\x02\x02\x02ij\x03\x02\x02\x02j\x1E\x03\x02\x02\x02ki\x03' +
        "\x02\x02\x02lq\x07$\x02\x02mp\x05!\x11\x02np\x05\'\x14\x02om\x03\x02\x02" +
        '\x02on\x03\x02\x02\x02ps\x03\x02\x02\x02qo\x03\x02\x02\x02qr\x03\x02\x02' +
        '\x02rt\x03\x02\x02\x02sq\x03\x02\x02\x02tu\x07$\x02\x02u \x03\x02\x02' +
        '\x02vy\x07^\x02\x02wz\t\x04\x02\x02xz\x05#\x12\x02yw\x03\x02\x02\x02y' +
        'x\x03\x02\x02\x02z"\x03\x02\x02\x02{|\x07w\x02\x02|}\x05%\x13\x02}~\x05' +
        '%\x13\x02~\x7F\x05%\x13\x02\x7F\x80\x05%\x13\x02\x80$\x03\x02\x02\x02' +
        '\x81\x82\t\x05\x02\x02\x82&\x03\x02\x02\x02\x83\x84\n\x06\x02\x02\x84' +
        '(\x03\x02\x02\x02\x85\x87\x07/\x02\x02\x86\x85\x03\x02\x02\x02\x86\x87' +
        '\x03\x02\x02\x02\x87\x88\x03\x02\x02\x02\x88\x89\x05+\x16\x02\x89*\x03' +
        '\x02\x02\x02\x8A\x93\x072\x02\x02\x8B\x8F\t\x07\x02\x02\x8C\x8E\t\b\x02' +
        '\x02\x8D\x8C\x03\x02\x02\x02\x8E\x91\x03\x02\x02\x02\x8F\x8D\x03\x02\x02' +
        '\x02\x8F\x90\x03\x02\x02\x02\x90\x93\x03\x02\x02\x02\x91\x8F\x03\x02\x02' +
        '\x02\x92\x8A\x03\x02\x02\x02\x92\x8B\x03\x02\x02\x02\x93,\x03\x02\x02' +
        '\x02\x94\x96\x07/\x02\x02\x95\x94\x03\x02\x02\x02\x95\x96\x03\x02\x02' +
        '\x02\x96\x97\x03\x02\x02\x02\x97\x98\x05+\x16\x02\x98\x99\x051\x19\x02' +
        '\x99.\x03\x02\x02\x02\x9A\x9C\x07/\x02\x02\x9B\x9A\x03\x02\x02\x02\x9B' +
        '\x9C\x03\x02\x02\x02\x9C\x9D\x03\x02\x02\x02\x9D\x9F\x05+\x16\x02\x9E' +
        '\xA0\x051\x19\x02\x9F\x9E\x03\x02\x02\x02\x9F\xA0\x03\x02\x02\x02\xA0' +
        '\xA1\x03\x02\x02\x02\xA1\xA2\x053\x1A\x02\xA20\x03\x02\x02\x02\xA3\xA5' +
        '\x070\x02\x02\xA4\xA6\t\b\x02\x02\xA5\xA4\x03\x02\x02\x02\xA6\xA7\x03' +
        '\x02\x02\x02\xA7\xA5\x03\x02\x02\x02\xA7\xA8\x03\x02\x02\x02\xA82\x03' +
        '\x02\x02\x02\xA9\xAB\t\t\x02\x02\xAA\xAC\t\n\x02\x02\xAB\xAA\x03\x02\x02' +
        '\x02\xAB\xAC\x03\x02\x02\x02\xAC\xAE\x03\x02\x02\x02\xAD\xAF\t\b\x02\x02' +
        '\xAE\xAD\x03\x02\x02\x02\xAF\xB0\x03\x02\x02\x02\xB0\xAE\x03\x02\x02\x02' +
        '\xB0\xB1\x03\x02\x02\x02\xB14\x03\x02\x02\x02\xB2\xB4\t\v\x02\x02\xB3' +
        '\xB2\x03\x02\x02\x02\xB4\xB5\x03\x02\x02\x02\xB5\xB3\x03\x02\x02\x02\xB5' +
        '\xB6\x03\x02\x02\x02\xB6\xB7\x03\x02\x02\x02\xB7\xB8\b\x1B\x02\x02\xB8' +
        '6\x03\x02\x02\x02\x11\x02ioqy\x86\x8F\x92\x95\x9B\x9F\xA7\xAB\xB0\xB5' +
        '\x03\b\x02\x02';

    public static __ATN: ATN;
    public static get _ATN (): ATN {
      if (!AgtypeLexer.__ATN) {
        AgtypeLexer.__ATN = new ATNDeserializer().deserialize(Utils.toCharArray(AgtypeLexer._serializedATN))
      }

      return AgtypeLexer.__ATN
    }
}
